home *** CD-ROM | disk | FTP | other *** search
- The GNU libplot library and the plotting utilities based on it, such as GNU
- `graph' and GNU `plot', can display text strings in any of 21 `Hershey
- fonts', such as HersheySerif and HersheySerif-Bold. Hershey fonts are
- built from `Hershey glyphs'. There are two sorts of glyph: standard
- (`occidental') and Japanese (`oriental'). The glyphs were digitized by
- Dr. Allen V. Hershey at what is now the U.S. Naval Surface Weapons Center
- in Dahlgren, VA (formerly the U.S. Naval Weapons Laboratory), mostly during
- the late 1960's.
-
- There are many glyphs that are not part of any Hershey font. Such glyphs
- must be referred to by number. For example, the string "\#H0744\#H0745"
- uses escape sequences to refer to Hershey glyphs #744 and #745, which are a
- shamrock and a fleur-de-lys respectively. All occidental Hershey glyphs
- have numbers in the 0..3999 range, but there are many gaps. In this file
- we explain how the array of occidental glyphs now in GNU libplot was
- constructed, and give more information on the numbering scheme.
-
- The array was assembled in large part from earlier (pre-GNU) public
- distributions of the occidental glyphs. These included the following.
-
- #0. Distributions by Dr. Hershey himself, in the late 1960's and 1970's.
- These were distributions of his typographic software, of which the glyph
- distribution was a part. Initial distributions were on punched cards and
- later ones were on magnetic tape. At least 120 copies of the typographic
- software were distributed. It is not known how many distinct releases
- there were, either of the software or of the glyphs.
-
- #1. The U.S. NBS [U.S. National Bureau of Standards] publication "A
- Contribution to Computer Typesetting Techniques", dated 1976, and the
- accompanying magnetic tape. This presumably included all glyphs in use at
- that time. In Figure 15 of that publication, 43 additional glyphs
- (digitized by Norman Wolcott at NBS) were shown, but the data for them were
- not given. (Glyphs 2250, 2260 were probably included in Figure 15
- erroneously; they were also listed among the standard glyphs).
-
- #2. The Usenet distribution of Pete Holzmann <pete@xc.org> and Jim Hurt
- (to the newsgroup mod.sources, now defunct). Circa 1985, but based on the
- above 1976 tape. It introduced the scheme for encoding vector glyphs as
- strings which is now used in libplot. Almost identical to the above (none
- of the 43 new Wolcott glyphs), but included three additional glyphs: 997,
- 998, 999. These were merely horizontal strokes.
-
- #3. The glyph database incorporated in the PGPLOT subroutine library of
- Tim Pearson <tjp@astro.caltech.edu>, still available by ftp and http from
- astro.caltech.edu. This was probably based, c. 1980, on a distribution
- obtained either from Nelson Beebe (see #4 below) or directly from
- Dr. Hershey. It included data for the 43 new Wolcott glyphs, and 10
- additional glyphs numbered 236 (an cartographic-sized `@'), 590 (an
- underscore), 2078 (Aring), 3330, 3331, 3332, 3430, 3431, 3432
- (umlaut-accented German letters), and 4000 (a boxed inverted questionmark).
- The last of these (#4000) apparently did not originate with Dr. Hershey,
- but the others may have. The horizontal stroke glyphs 997, 998, 999 from
- distribution #2 were not present. Ten glyphs were revised: 1225, 1226,
- 1407, 1408, 2225, 2226, 2407, 2408, 3010, and 3159. The first eight of
- these were braces. There were 1642 separately indexed glyphs in all.
-
- #4. The glyph database incorporated in the PLOT79 utility of Nelson Beebe
- <beebe@math.utah.edu>. Also dates back to c. 1980; based on a tape from
- Dr. Hershey himself, with local additions. All the 1642 glyphs from #3 are
- present, except that 590 (an underscore) and 2078 (Aring) are missing.
- (The Hershey tape may have been a slightly earlier one than the tape used
- for #3?) Also, 911..922 (twelve outline and filled arrows) and 923..926
- (four large pointing hands) were added by Dr. Beebe. As well, 256 small
- fixed-width glyphs (marker symbols taken from a plotter in the 1970's, and
- low-resolution alphabets based on the plotter alphabet) in the 1500..1627
- and 1700..1827 ranges were added. There were 1912 separately indexed
- glyphs in all.
-
- #5. The glyph database accompanying Dr. Hershey's distribution in the
- 1980's of typographic software in True Basic, for PC's. For details, see
- his 1981 technical report `Advanced Computer Typography' and his 1995
- technical report `Cartography and Typography with True Basic'. The 43
- Wolcott glyphs (see above) were not present, and the 10 extra glyphs from
- the PGPLOT distribution were not present either. However, an entire new
- alphabet (Triplex Greek) was included. The small upper-case alphabet
- (`Cartographic Roman') was extended to include lower-case characters, and a
- small `Cartographic Italic' alphabet was added as well. Many alphabets
- were extended by crafting such characters as @, <, >, #, and % for them.
- Also, several glyphs were revised. 13 cartographic symbols in the 700..899
- range were dropped, probably inadvertently.
-
-
- The glyph array built into GNU libplot, and accessible to the GNU plotting
- utilities, is a merged version. It includes all glyphs from distribution
- #5, the 43 Wolcott glyphs, and 7 of the 10 additional glyphs from
- distribution #3, i.e., 2078 (Aring), and 3330, 3331, 3332, 3430, 3431, 3432
- (umlaut-accented German letters). The 13 cartographic symbols in the
- 700..899 range that were inadvertently dropped from distribution #5 have
- been restored.
-
- Many non-Hershey glyphs were also included in the GNU libplot array of
- occidental glyphs, to facilitate the construction of ISO-Latin-1 Hershey
- fonts. The 4000..4194 range contains a large number of such non-Hershey
- glyphs. Nelson Beebe's large pointing hands (923..926 in distribution #4)
- were included as 4040..4043. An important source of non-Hershey glyphs was
- Robert Beach's UGS [Unified Graphics System], which was developed at the
- SLAC [Stanford Linear Accelerator Center] Computation Research Group in the
- 1970's. (See Computer Graphics, Fall 1974, pp. 22-23. The UGS source code
- may still be available at ftp://ftp.slac.stanford.edu/software/ugs77/ .)
- A number of glyphs in the 4000..4025 range were taken from the UGS glyph
- repertory.
-
- The following is a breakdown of the original Hershey glyphs (defined to
- include the 43 Wolcott glyphs and the 10 additional glyphs mentioned
- above). They occupy the 1..3926 range of the occidental array, and may be
- accessed individually by escape sequences in the range "\#H0001".."\#H3926".
- They fall into the following groups:
-
- 0001..0284 alphanumeric symbols, cartographic [small] size
- 0501..0746 alphanumeric symbols, principal [large] size
- 0750..0909 centered symbols
- 0910 alphanumeric symbols, principal [large] size
- 1001..1295 alphanumeric symbols, indexical [medium] size
- 1401..2312 alphanumeric symbols, principal [large] size
- 2317..2382 centered symbols
- 2401..3926 alphanumeric symbols, principal [large] size
-
- `Alphanumeric symbols' means not just alphabetic symbols and numerals, but
- also punctuation marks, mathematical symbols, etc.; in general, any symbol
- that can be viewed as having a well-defined `baseline', and which could
- appear in a string of characters resting on that baseline.
-
- `Centered symbols' are different. In practice they would seldom be
- displayed in such a way that they are resting on a baseline. Instead, they
- would be drawn so as to be centered on a specified point. Also, they would
- seldom appear in a string. An example would be the `sand' symbol, Hershey
- glyph #0764, which is clearly designed to be drawn on a map rather than to
- appear in text.
-
- In the original distributions of the Hershey glyphs, no distinction was
- made between alphanumeric symbols and centered symbols. That was possible
- because in the coordinate system used by Dr. Hershey, all are centered on
- the point (0,0). The `baseline' concept was not used. Each alphanumeric
- symbols had a well-defined baseline, but the baselines differed for the
- three sizes.
-
- When strings are drawn with the alabel() function of GNU libplot, e.g.,
- when GNU `graph' labels axes, a baseline must be chosen. For alphanumeric
- symbols of all kinds and also centered symbols, we have chosen it to be the
- baseline appropriate for the principal [large] size alphanumeric symbols.
- This determines a choice of vertical elevation of each symbol, when it is
- rendered as an element of a string.
-
- If the `x' option to alabel() is used, to place characters on a baseline,
- the vertical elevation may not be appropriate for indexical [medium] and
- cartographic [small] alphanumeric symbols. But nowadays the indexical and
- cartographic glyphs are seldom accessed. The only reason for drawing
- smaller characters is to draw superscripts and subscripts, and our
- rendering algorithm uses miniaturized principal-size characters for that.
-
- If you are using the alabel() function to display strings, you may specify
- `c' as the third argument to obtain vertical centering, instead of the
- usual `x', which places characters on a baseline. You would use `c' to
- place a centered symbol at a specified point. For example, the function
- call
-
- alabel ('c', 'c', "\#H0764");
-
- would place the `sand' symbol, glyph #764, at the current position. The
- first argument `c' requests horizontal centering, so the symbol will be
- centered both horizontally and vertically.
-